#include <iostream>

using namespace std;
//引用做函数参数:函数传参时，可以利用引用的技术让形参修饰实参
//优点:可以简化指针修改实参，通过引用参数产生的效果与按地址传递的效果是一样的

//交换函数
//1、值传递
void swap1(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}

//2、地址传递
void swap2(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

//3、引用传递
void swap3(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}


int main() {
    int a = 10;
    int b = 20;
    swap1(a, b);//值传递，形参不会修饰实参
    cout << "a=" << a << ",b=" << b << endl;
    a = 10;
    b = 20;
    swap2(&a, &b);//地址传递，形参会修饰实参的
    cout << "a=" << a << ",b=" << b << endl;
    a = 10;
    b = 20;
    swap2(&a, &b);//引用传递，形参会修饰实参的
    cout << "a=" << a << ",b=" << b << endl;
    return 0;
}

